package com.ruoyi.common.utils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * @author admin Mr.zhu
 * @title 获得汉子的拼音  或者简拼
 * @description
 * @updateTime
 * @throws
 */
public class PinyinUtil {
    /**
     * 得到全拼
     *
     * @param str
     * @return 全拼(小写)
     */

    public static String getPinYin(String str) {
        char t1[] = null;

        t1 = str.toCharArray();

        String[] t2 = new String[t1.length];

        HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();

        t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);

        t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

        t3.setVCharType(HanyuPinyinVCharType.WITH_V);

        String t4 = "";

        int t0 = t1.length;

        try {
            for (int i = 0; i < t0; i++) {
//是用来判断是不是中文的一个条件，采用的是unicode编码

                if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
                    t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);

                    t4 += t2[0];

                } else {
                    t4 += Character.toString(t1[i]);

                }

            }

            return t4;

        } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
            badHanyuPinyinOutputFormatCombination.printStackTrace();

        }

        return t4;

    }

    /**
     * 得到汉字首字母的拼音
     *
     * @param str
     * @return 拼音首字母(大写)
     */

    public static String getPinYinHeaderChar(String str) {
        String convert = "";

        for (int i = 0; i < str.length(); i++) {
            char word = str.charAt(i);

            String[] pinYinArray = PinyinHelper.toHanyuPinyinStringArray(word);

            if (pinYinArray != null) {
                convert += pinYinArray[0].charAt(0);

            } else {
                convert += word;

            }

        }

        return convert.toUpperCase();

    }
}
